
package com.liming.common.serializer;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.liming.common.util.BigDecimalUtils;
import org.apache.commons.lang3.math.NumberUtils;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * 元 -> 分
 * 正常项目中右移2位置一次即可。
 * 但本项目中使用OpenFeign远程调用，因此序列化和反序列话会有两次，若想将 元 -> 分，则每次右移一次。
 * @author liming
 */
public class YuanToCentDeserializer extends JsonDeserializer<Integer> {

    @Override
    public Integer deserialize(JsonParser p, DeserializationContext dc) throws IOException {
        if (Objects.isNull(p)) {
            return null;
        }
        String text = p.getText();
        if (!NumberUtils.isCreatable(text)) {
            return null;
        }
        BigDecimal price = new BigDecimal(text);
        return BigDecimalUtils.right1Int(price);
    }
}